// Copyright Epic Games, Inc. All Rights Reserved.

#pragma once // 防止头文件重复包含

#include "Components/CapsuleComponent.h" // 胶囊体组件
#include "GameplayTagContainer.h" // 游戏标签容器
#include "IAimAssistTargetInterface.h" // 瞄准辅助目标接口

#include "AimAssistTargetComponent.generated.h" // 生成的头文件

#define UE_API SHOOTERCORERUNTIME_API // 定义API宏

class UObject; // 对象前向声明

/**
 * 此组件可以添加到任何actor，以使其在瞄准辅助目标管理器中注册。
 */
UCLASS(MinimalAPI, BlueprintType, meta=(BlueprintSpawnableComponent)) // 最小API，蓝图类型，元数据指定可蓝图生成组件
class UAimAssistTargetComponent : public UCapsuleComponent, public IAimAssistTaget // 继承自UCapsuleComponent和IAimAssistTaget
{
    GENERATED_BODY() // 生成类主体

public:
    
    //~ Begin IAimAssistTaget interface // 开始IAimAssistTaget接口
    UE_API virtual void GatherTargetOptions(OUT FAimAssistTargetOptions& TargetData) override; // 收集目标选项
    //~ End IAimAssistTaget interface // 结束IAimAssistTaget接口
    
protected:
    
    UPROPERTY(BlueprintReadWrite, EditAnywhere) // 蓝图读写，可在任何地方编辑
    FAimAssistTargetOptions TargetData {}; // 目标数据
};

#undef UE_API // 取消定义API宏